/**
 * Shake 蛇类
 */

class Snake {
    constructor() {
        this.data = [
            {
                x: 6, y: 4, color: "green"
            }, {
                x: 5, y: 4, color: "white"
            }, {
                x: 4, y: 4, color: "white"
            }, {
                x: 3, y: 4, color: "white"
            }, {
                x: 2, y: 4, color: "white"
            }
        ];
        this.direction = 'right';
    }
    // 移动
    move() {
        let i = this.data.length - 1;
        this.lastData = {
            x: this.data[i].x,
            y: this.data[i].y,
            color: this.data[i].color
        }

        /* 让后边每一格走到前一格的位置上 */
        for (let i = this.data.length-1; i > 0; i--) {
            this.data[i].x = this.data[i - 1].x;
            this.data[i].y = this.data[i - 1].y;
        }

        // 根据移动方向修改第一个格的位置
        switch (this.direction) {
            case 'left':
                this.data[0].x--;
                break;
            case 'right':
                this.data[0].x++;
                break;
            case 'top':
                this.data[0].y--;
                break;
            case 'bottom':
                this.data[0].y++;
                break;
        }
    }
    // 改变方向
    changeDirection(dir) {
        // 如果当前方向为左右，那么方向只能修改为上下，如果当前方向为上下，那么方向只能修改为左右
        if (this.direction === 'left' || this.direction === 'right') {
            if (dir === 'left' || dir === 'right') {
                return false;
            }
        } else {
            if (dir === 'top' || dir === 'bottom') {
                return false;
            }
        }
        this.direction = dir;
        return true;
    }
    // 吃到目标物，增加一个格子
    eatFood() {
        this.data.push(this.lastData);
    }
}

export default Snake;